home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_b
/
null2.m65
< prev
next >
Wrap
Text File
|
1995-04-22
|
4KB
|
151 lines
0100 .OPT NUM
0110 .TITLE "Null Device Handler" 7/31/86
0120 ;
0130 ;
0140 ;
0150 ; (C) 1986 by Paul B. Loux
0160 ;
0170 ; Permission is granted to
0180 ; distribute on a non-profit
0190 ; basis provided that this
0200 ; header remains.
0210 ;
0220 ;
0230 ; Null Device handler, installs
0240 ; a device "N:" into the device
0250 ; handler table. The null device
0260 ; is a no-op handler useful for
0270 ; for debugging I/O routines.
0280 ; It always returns a status
0290 ; of "1" (no error), and the
0300 ; Accumulator is loaded with
0310 ; $9B (return) to facilitate
0320 ; record I/O through CIO. The
0330 ; handler supports all CIO and
0340 ; XIO command types, and
0350 ; occupies only 82 bytes. It
0360 ; protects itself from RESET.
0370 ;
0380 ;
0390 ;
0400 ; System Equates
0410 ; ______________
0420 ;
0430 DOSVEC = $0A
0440 DOSINI = $0C
0450 SPBYT1 = $CB
0460 SPBYT2 = $CC
0470 RUNAD = $02E0
0480 INITAD = $02E2
0490 SAFETY = $02F5
0500 MEMLO = $02E7
0510 HATABS = $031A
0520 COLDSV = $E477
0530 ;
0540 ;
0550 ; Re-install Code
0560 ; _______________
0570 ;
0580 ; (keep RESET-proof)
0590 ;
0600 *= $1EA1
0610 START
0620 JSR $FFFF
0630 SETVEX
0640 LDA # <MEMADJ
0650 STA MEMLO
0660 LDA # >MEMADJ
0670 STA MEMLO+1
0680 LDA #$FF
0690 STA SAFETY
0700 ;
0710 ;
0720 ; Vector setup
0730 ; ____________
0740 ;
0750 NSETUP
0760 LDA #'N
0770 STA TEMP
0780 LDX #$00
0790 SERCH
0800 LDA HATABS,X
0810 CMP TEMP
0820 BEQ FOUND
0830 CMP #$00
0840 BEQ FOUND
0850 INX
0860 INX
0870 INX
0880 BNE SERCH
0890 RTS ; Error
0900 FOUND
0910 LDA #'N
0920 STA HATABS,X
0930 LDA # <NDRIVER
0940 STA HATABS+1,X
0950 LDA # >NDRIVER+1
0960 STA HATABS+2,X
0970 RTS
0980 ;
0990 ; N: Vector Table
1000 ; _______________
1010 ;
1020 NDRIVER
1030 .WORD NOPEN-1 ; Open
1040 .WORD NCLOS-1 ; Close
1050 .WORD NGETC-1 ; Read
1060 .WORD NPUTC-1 ; Write
1070 .WORD NSTAT-1 ; Status
1080 .WORD NSPEC-1 ; Special
1090 .BYTE $4C
1100 .WORD NINIT ; Init
1110 ;
1120 NOPEN ; All no-ops
1130 NCLOS
1140 NGETC
1150 NPUTC
1160 NSTAT
1170 NSPEC
1180 NINIT
1190 LDA #$9B ; EOL
1200 LDY #$01 ; Success flag
1210 RTS
1220 ;
1230 ; Working variables
1240 ; _________________
1250 ;
1260 TEMP .BYTE 0
1270 INIDOS .WORD 0
1280 ;
1290 ;
1300 MEMADJ = * ; Re-set Memlo pointer
1310 ;
1320 ; Install Code
1330 ; ____________
1340 ;
1350 LOAD
1360 LDA DOSINI
1370 STA START+1
1380 STA INIDOS
1390 LDA DOSINI+1
1400 STA START+2
1410 STA INIDOS+1
1420 LDA # <START
1430 STA DOSINI
1440 LDA # >START
1450 STA DOSINI+1
1460 RTS
1470 ;
1480 ; Set Load-n-Go
1490 ; _____________
1500 ;
1510 *= INITAD
1520 .WORD LOAD
1530 *= RUNAD
1540 .WORD SETVEX
1550 ;
1560 ;
1570 ; End
1580 ; ___
1590 .END
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>